package com.base.commons.tools.enums;

import lombok.Getter;

/**
 * 语言枚举：提供了老版本语言：如.ch_CN；和新版本语言：如.ch-cn
 * @author wangwenji
 * @time 2020/08/02
 */
@Getter
public enum LanguageEnum {

    // 老版本语言
    zh_CN("zh_CN"),
    en_US("en_US"),
    ru_RU("ru_RU"),
    jp_JP("jp_JP"),
    sn_US("sn_US"),
    zh_TW("zh_tw"),
    cz_CZ("cz_CZ"),
    ro_RO("ro_RO"),
    fr("fr"),
    // 新版本语言
    zh_cn("zh-cn"),
    en_us("en-us"),
    ru_ru("ru-ru"),
    jp_jp("jp-jp"),
    sn_us("sn-us"),
    zh_tw("zh-tw"),
    cz_cz("cz-cz"),
    ro_ro("ro-ro")
    ;

    LanguageEnum(String code){
        this.code = code;
    }

    private String code;

    /**
     * 新版本语言转老版本语言 zh-cn conver to zh_CN
     * @param code
     * @return
     */
    public static String convertToNonstandard(String code) {
        if (code != null) {
            for (LanguageEnum s : values()) {
                if (s.code.equals(code)) {
                    if(s.equals(zh_cn))
                        return zh_CN.code;
                    if(s.equals(en_us))
                        return en_US.code;
                    if(s.equals(ru_ru))
                        return ru_RU.code;
                    if(s.equals(jp_jp))
                        return jp_JP.code;
                    if(s.equals(sn_us))
                        return sn_US.code;
                    if(s.equals(zh_tw))
                        return zh_TW.code;
                    if(s.equals(cz_cz))
                        return cz_CZ.code;
                    if(s.equals(ro_ro))
                        return ro_RO.code;
                    return code;
                }
            }
        }
        return code;
    }

    /**
     * 老版本语言转新版本语言 zh_CN conver to zh-cn
     * @param code
     * @return
     */
    public static String convertToStandard(String code) {
        if (code != null) {
            for (LanguageEnum s : values()) {
                if (s.code.equals(code)) {
                    if(s.equals(zh_CN))
                        return zh_cn.code;
                    if(s.equals(en_US))
                        return en_us.code;
                    if(s.equals(ru_RU))
                        return ru_ru.code;
                    if(s.equals(jp_JP))
                        return jp_jp.code;
                    if(s.equals(sn_US))
                        return sn_us.code;
                    if(s.equals(zh_TW))
                        return zh_tw.code;
                    if(s.equals(cz_CZ))
                        return cz_cz.code;
                    if(s.equals(ro_RO))
                        return ro_ro.code;
                    return code;
                }
            }
        }
        return code;
    }
}